package com.zero.ava.management;

import com.zero.ava.impl.kernel.NodeType;

/**
 * 节点不可变的配置信息
 * 
 */
public interface ConfigMXBean {
	/** MBean唯一命名. */
	String MXBEAN_NAME = "com.zero.ava:type=Config";

	/**
	 * 返回节点类型
	 * 
	 * @return the node type
	 * 
	 */
	NodeType getNodeType();

	/**
	 * 返回应用名称.
	 * 
	 * @return the application name
	 */
	String getAppName();

	/**
	 * 返回应用的根目录.
	 * 
	 * @return the application root directory name
	 */
	String getAppRoot();

	/**
	 * 返回应用对外的监听类命（对玩家的）.
	 * 
	 * @return the class name of the application listener
	 */
	String getAppListener();

	/**
	 * Returns the host this node is running on.
	 * 
	 * @return the host this node is running on
	 */
	String getHostName();

	/**
	 * Returns the server host property.
	 * 
	 * @return the server host property, which is valid for application nodes
	 *         only
	 */
	String getServerHostName();

	/**
	 * Returns the JMX remote listening port.
	 * 
	 * @return the port JMX is listening on for remote connections, or
	 *         {@code -1} if no remote JMX connections are supported
	 */
	int getJmxPort();

	/**
	 * Returns the protocol descriptor, as a {@code String}.
	 * 
	 * @return the protocol descriptor, as a {@code String}
	 */
	String getProtocolDescriptor();
}
